/**
 * Paquete global. Contiene la clase EstadistecMain la cual se encarga
 * de iniciar la aplicacion y las demas bibliotecas que sean necesarias para
 * que corra el programa.
 */
package estadistec;

import java.io.File;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.plaf.metal.MetalLookAndFeel;

import estadistec.grafico.*;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

/**
 * Clase principal. Se encarga de iniciar la aplicacion y las demas 
 * bibliotecas que sean necesarias para que corra el programa.
 *
 * @author julatec
 */
public final class EstadistecMain {

	/**
	 * Cortina del programa que indica todas las acciones que se estan
	 * realizando mientras el programa carga.
	 */
	private static Cortina cortina;

	/**
	 * Interfaz grafica del programa.
	 */
	private static InterfazUsuario interfazUsuario;

	/**
	 * Inicializar las bibliotecas que son requeridas en el sistema.
	 */
	private static void cargarBibliotecas(){
		cortina.mostrarMensaje("Cargando bibliotecas...");
	}

	private static void cargarTema(){
		try {
			// set the look and feel
			MetalLookAndFeel.setCurrentTheme
				(new EstiloAplicacion
				 (new File(ConfiguracionGrafica.TEMA_PATH))
				);
			// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

			UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
		} catch (Exception ex) {
			System.err.println("Fallo la carga del tema");
			ex.printStackTrace(System.err);
		}
		JFrame.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);

	}

	/**
	 * Inicilizar el entorno grafico y cada una de las varialbes de entorno
	 * correspondiente.
	 */
	private static void inicializarGrafico(){
		cortina.mostrarMensaje("Construyendo entorno grafico...");
		ConstantesGraficas.CONFIG.cargarConfiguracion(cortina);
		interfazUsuario = new estadistec.grafico.EstadistecVentana();
	}

	/**
	 * Cargar la cortina y la ventana del programa
	 */
	private static void iniciarIntefazGrafica(){
		cortina.mostrarMensaje("Inicializando la interfaz de usuario...");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		double d = 1234567.89;
		double n = -1234567.89;

		DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.ENGLISH);
		DecimalFormat df = 
				//(DecimalFormat) NumberFormat.getInstance();
				new DecimalFormat("###0.#", dfs);
		df.applyPattern( "###0.#");
		System.out.println(df.format(d));
		System.out.println(df.format(n));
		System.out.println(df.format(new Float("3003.45")));
	//	if(true) return;


		String lcOSName = System.getProperty("os.name").toLowerCase();
		boolean IS_MAC = lcOSName.startsWith("mac os x");
		if (IS_MAC) {
			// take the menu bar off the jframe
			System.setProperty("apple.laf.useScreenMenuBar", "true");
	
			// set the name of the application menu item
			System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Estadistec");
		}
		cargarTema();
		cortina=new EstadistecCortina();
		cortina.iniciar();
		cargarBibliotecas();
		inicializarGrafico();
		iniciarIntefazGrafica();
		cortina.terminar();
		interfazUsuario.iniciar();
	}

}
